2024. 03. 29., 대전 유성구 대학로.

채 엉기지 못한 향운을 조금 내몰고

아침 미팅이 미워도 별 수 없습니다. 내가 잘 하고 있는지 점검하는 유일한 시간이라고 생각해요. 동시에 월요병을 효과적으로 몰아내는 좋은 방법이라고 생각합니다. 내 특기를 십분 활용해서 한 건 없지만 있어보이게 회의록을 작성해두었습니다. 부풀리고 과장하는 것도 현대 사회에서 중요한 능력이라는 말을 최근에 많이 들으면서 이 부분에 있어서 떳떳해지기로 했어요.

데이터셋을 구성하는데 libclang을 이용하고 있었습니다만 여러 문제가 생겼고 이를 다시 구현하기 위한 디자인이 잘 되고 있지 않은 상황이었습니다. 이런 이야기를 미팅 중에 했었는데 교수님께서 ctags를 써보라고 말씀해주셨어요. Libclang을 이용한 풀이에 매몰되어 있음을 깨달을 수 있었습니다.

본디 원래 오늘 폭짜를 하기로 했었습니다. 어제 일기예보를 보고 다음주로 미루자고 했는데 미루길 잘한 것 같아요. 비가 부슬부슬 오는 와중에 폭풍의 언덕에 벚꽃이 필 기미는 보이지 않았습니다. 학식을 같이 먹은 동기의 말을 빌리자면 ‘세상에서 가장 우울한 폭짜’가 될 뻔 했어요. 지금 생각해보니 세상에서 가장 우울한게 뭐가 어때서라는 생각이 들긴 합니다.

연구실 사람들과 함께 랩으로 돌아가는 길에 뒤에서 누가 “베타다~”라고 불러서 깜짝 놀랐어요. 전 회사 사람들이나 동아리 친구들이 베타라고 자주 불러서 익숙해진줄 알았습니다. 컬그와 이것저것 이야기를 나누었습니다. 연구실 사람들은 나에게 아직 학부생인 친구가 많냐고 물어봤어요. 몇 년 뒤 나도 똑같은 질문을 신입생에게 하게 될 것 같았습니다.

HDMI 케이블을 사러 학생회관에 간 김에 동아리방에서 작업을 이어 했습니다. libclang 말고 다른 쓸만한 파서를 찾아봤어요. 처음 찾아본 후보는 pycparser 였습니다. ‘Python C Parser’를 검색했을 때 가장 먼저 나오는 패키지였거든요. cffi에서도 쓰는 패키지라는 말이 나를 설득시켰지만 결국 tree-sitter로 마음을 돌렸습니다. 이미 수많은 사람들에 의해 검증된 라이브러리라는 점이 신뢰감을 높였고 특히 파이썬 바인딩에 타입 힌트가 제대로 붙어있는 점이 매력적이었어요.

프로젝트에서 libclang을 떼어내고 tree-sitter를 붙였습니다. 정확히 원하는 수준의 파서였고 기존 코드와 잘 interop 되어서 다행이었습니다. 데이터셋을 생성하는 파이프라인을 다시 실행시켜보니 예상 시간으로 24시간이 찍혔습니다. 설득력있는 수치가 나온 것을 보고 안심했습니다. 아무리 병렬화를 한다고 해도 이전처럼 30분만에 데이터셋이 뽑히는건 이상했거든요.

데이터셋이 만들어지는 동안 과제를 했습니다. 사실 옮겨 쓰기에 가까워요. 이전에 날려 쓴 풀이 과정을 예쁘게 다시 쓰는 것에 불과합니다. 그런데 이 과정에 생각보다 오래 결려서 앞으로는 그냥 그때 그때 예쁘게 쓰기로 다짐했습니다.

2024. 03. 25., 경북 포항시 남구 청암로 77 체육관. 2024. 03. 25., 경북 포항시 남구 청암로 77 체육관.

비가 오는 바람에 오래간만에 체육관에서 러닝을 했습니다. 한동안 체육관 트랙을 이용하지 않아서 몰랐는데 90도로 회전하는데 체력이 많이 소모된다는 사실을 깨달을 수 있었어요. 별개로 실내 러닝은 나와 잘 맞지 않는 것 같습니다. 답답해요.

2024. 03. 26., 경북 포항시 남구 청암로 77.

딥러닝 시간에 퀴즈를 봤습니다. 퀴즈를 볼 만큼 진도를 충분히 나간 지 오래였기에 오늘 퀴즈를 보는 것은 당연한 수순이었어요. 기계학습 과제로 나온 문제들과 비슷한 형태로 퀴즈가 나와서 다행이었습니다.

수업 중간에 어제 돌려둔 데이터셋 파이프라인이 모두 돌았나 잠깐 확인해봤습니다. 분명 모두 돌았는데 데이터가 생성되어 있지 않았어요. 나도 돌아버리는 줄 알았습니다. 추상화 수준이 높아서 디버깅이 어려웠어요. 침착하게 하나씩 살펴보며 문제를 확인해보니 이터레이터를 매핑시킨 결과물의 길이가 0인 부분이 있었습니다. 병렬화 과정에서 이터레이터 하나를 여러 프로세스에 넣으면서 문제가 생긴 것 같았어요. 이터레이터를 리스트로 변환하는 과정을 추가해서 문제를 해결했습니다. 프로세스 풀에서 imap을 쓰는 부분도 청크를 적용시키거나 map으로 바꿔서 실행 속도를 높여주었어요. 예상 시간으로 24시간이 나오던 것을 5시간까지 줄이는데 성공했습니다.

편의점에서 김밥을 데우면서 후배를 마주쳤습니다. 살이 정말 많이 빠졌대요. 기분이 좋아졌습니다.

교수님께서 내일 미팅에 쓸 슬라이드가 필요하다고 하셔서 최대한 빨리 만들기 위해 노력했습니다. 6시 전에 피드백을 받고 싶었어요. 4시 즈음에 초안을 보낼 수 있었고 교수님의 피드백을 받아 7시 즈음에 최종본을 완성할 수 있었습니다.

완성된 데이터셋을 확인해봤고 그 크기는 100GB에 달했습니다. 이전에 만든 데이터셋이 잘못되었음을 티나게 증명하고 있었습니다.

2024. 03. 26., 경북 포항시 남구 청암로. 2024. 03. 26., 경북 포항시 남구 청암로.

날씨가 좋아서 밖에서 5km를 뛰었고 누적 500km를 달성했습니다.

오늘 아침에는 다른 학교 교수님과 함께 미팅을 했어요. 어제 만든 슬라이드로 내 아이디어 프로포절을 발표하는 자리였습니다. 발표 이전에 논의를 나누면서 교수님께서 여러 의문점을 남기셨는데 비집고 들어갈 틈이 보이지 않아서 대답하지 못했습니다. 입이 근질거리던 찰나에 내가 발표할 차례가 되었고 related work를 소개하면서 교수님이 남긴 의문점을 모두 커버했어요. 미팅 때 교수님께서 의문점을 남긴 부분이랑 최근 세미나에서 다뤘던 내용을 모두 맞춰서 술술 말하는 내 모습이 멋있었습니다. 또, 프로포절을 통해 제시한 아이디어도 가능성 있어 보인다고 말씀해주셔서 기분이 좋았어요. 다른 접근 방식도 제안해주셨는데 학생이 알아듣기 쉽게 잘 설명해주셔서 쉽게 이해할 수 있었습니다.

날씨가 좋아서 밖에서 코딩을 하고 싶었어요. 바르벳에 갔습니다. 트레이닝 코드는 금방 작성할 수 있었어요. 문제는 데이터셋이었습니다. 100GB에 달하는 데이터를 아무 생각 없이 하나의 JSON에 저장해두었습니다. 제가 왜 그랬을까요. 이리저리 방법을 궁리해봤습니다. 빠른 JSON 파서를 찾아서 써보거나 데이터셋 파이프라인을 다시 돌리되 클릭하우스 테이블에 데이터를 쌓는 방식으로요. 후자로 마음이 기울었으나 제대로된 ORM도 없는 클릭하우스를 어느 세월에 래핑하나 싶어서 그냥 Hugging Face의 datasets 패키지를 쓰기로 결심했습니다. 코드 퀄리티 때문에 Hugging Face의 패키지들을 좋아하지 않지만, Apache Arrow를 내 손으로 래핑하는 작업은 더더욱 하고 싶지 않았습니다.

‘지구 끝의 온실’이 읽어보고 싶어서 방으로 돌아가는 길에 달팽이책방에 들렀습니다. 목적과는 다르게 서가의 새파란 책이 내 눈을 이끌었습니다. 천쓰홍의 ‘귀신들의 땅’. 귀신에게 홀린듯이 책을 집었고 결제까지는 얼마 걸리지 않았습니다.

앞으로는 토스트를 1개만 먹어야겠습니다. 저녁으로 토스트를 2개 샀는데 생각보다 많다는 사실을 깨달았어요. 요즘 먹는 배가 많이 줄어든 것 같습니다.

2024. 03. 28., 경북 포항시 북구 흥해읍 포항역로 1.

목요일부터 금요일까지 포항 밖으로 외출을 하지마는 노트북을 챙기지 않을 심산입니다. 지금 프로젝트에 도움이 될 만한 논문들을 미리 인쇄했어요. 논문을 6편쯤 인쇄할 때 이럴거면 그냥 노트북을 챙기지라는 생각이 들었습니다.

건조기를 돌리지 않으면 꼭 비가 오더라고요. 일기예보를 확인하지 않은 나를 탓해야겠지만 하늘을 탓하는 건 공짜니까 이쪽이 가성비가 더 좋습니다.

트레이닝 돌리는 코드도 있고 데이터셋도 있겠다 이제는 그냥 실행만 시키면 되겠다 생각하고 있었습니다. 하지만 여기저기서 버그가 터졌습니다. 나는 HF datasets가 디스크에 그렇게 캐시를 많이 하는지 몰랐어요. 캐시를 비활성화하는 옵션을 여기저기 수십 번 끼워넣었습니다. 본격적으로 트레이닝이 시작되고 나서는 내 코드에도 문제가 있음을 확인할 수 있었습니다. 배치 사이즈가 맞지 않는다는 이유로 한 스텝을 나아가지 못했고 나는 나의 바보 같음을 다시 한번 확인할 수 있었습니다.

전체 데이터셋에서 1% 정도만 추출해서 트레이닝을 돌렸고 예상 시간은 48시간으로 예측되었습니다. 어차피 이틀 동안 노트북 쳐다보지도 않을텐데 생각하며 터미널을 닫았어요.

교수님이 10분 일찍 수업을 끝내주셨지만 기차를 타기 까지는 시간이 조금 촉박했습니다. 씻는데 생각보다 시간을 많이 써 버렸어요. 짐을 허겁지겁 챙겼습니다. 택시가 잡히지 않을까봐 미리 부르기 시작했는데 택시가 코 앞에서 잡혀서 헐레벌떡 워커를 신고 뛰어갔습니다.

급하게 나온 탓에 고데기를 껐는지 제대로 확인을 하지 못했어요. 너무 불안해서 룸메이트에게 문자를 보냈고 미안해졌습니다.

2024. 03. 28., 경북 포항시 북구 흥해읍 포항역로 1.

기차에 타서는 어제 홀린듯이 샀던 ‘귀신들의 땅’을 읽기 시작했습니다. 파편화된 장들을 통해 많은 사람들의 관점에서 이야기를 풀어나가서 따라가기가 약간 어려웠습니다. 하지만 동시에 그러한 전개 방식이 아주 매력적이었어요. 또, 한국 소설에서 쓰지 않을 법한 표현들이 계속해서 등장했습니다. 글의 형태와 단어의 조합이 흥미로울 수 밖에 없었습니다.

강남역에는 5시 반에 도착했습니다. 일찍 도착한 김에 오피스에 올라가서 인사라도 할까 싶었는데 내향형 자아가 튀어나와서 그러지 못했어요. 주변을 조금 돌아다니다가 홈커밍 장소로 갔습니다. 시온님이 앞에 서 계시길래 아직 못 들어가는갑다 하고 있었는데 금방 다훈님이 내려오셔서 문을 열어주셨어요.

미카님이 다른 약속 때문에 놀아주지 못하는 대신에 콰즈님을 보내주셨습니다. 콰즈님이 나를 보고 너무나도 자연스럽게 오늘 술 마시냐고 물어보길래 나는 오늘 술 마시는거냐고 되물었어요. 콰즈님이 베타님 놀아주려면 당연히 술 마셔야 하는 거 아니냐고 대답했습니다. 간파당해버렸네요.

2024. 03. 28., 서울 강남구 테헤란로4길 14.

홈커밍 한다고 6시에 불러놓고 아무 이벤트도 하지 않길래 들어보니 7시 까지 네트워킹 시간이래요. 내향형 자아가 튀어나온 나에게는 고역이었습니다. 중간에 인터뷰 촬영하러 들어간 게 다행이었어요. 인터뷰 질문지도 미리 받고 답변도 어느 정도 준비했는데 전혀 준비되지 않은 척 했습니다. 준비했다고 말하면 괜히 기대치 올라갈까봐 거짓말했어요. 미안해요. — 준비하지 않았다고 거짓말 하길 잘 한 것 같습니다. 전두엽이 풀리지 않아서 너무 많이 더듬었어요. 그래도 인터뷰 후반에는 입이 터져서 꽤 말을 많이 할 수 있었습니다.

2024. 03. 28., 서울 강남구.

목요일이라서 그런지 뒤풀이에 사람들이 생각보다 많이 가지 않더라고요. 시끌벅적한 자리를 기대했는데 아쉬웠습니다. 친한 사람들이 많이 없어서 걱정했는데 다들 말을 재밌게 하시는 분들이라 즐거웠어요. 그런데 중간에 동료 분이 내 블로그를 봤다고 해서 당황했습니다. 아무 생각없이 네이버에 회사 이름을 검색해봤는데 내 블로그가 나왔대요. 그래서 글을 읽어봤대요. 너무 부끄러웠습니다. 자기가 공개로 글 올려놓고 왜 부끄러워 하는건지 이상하게 쳐다봤을 수도 있겠습니다.

2024. 03. 28., 서울 강남구.

뒤풀이가 파하고는 콰즈님과 따로 술자리를 가졌습니다. 집에 가려는 콰즈님을 잼얘로 꼬드겼어요. 근래에 가까운 친구들에게 마음 이야기를 잘 하지 않는데 오래간만에 내 이야기를 늘어놓았고, 약간 후련해졌습니다. — 아, 메로구이가 정말 맛있었어요.

윤빈이 집에 갔습니다. 술에 잔뜩 취한 채로 공모전에 의견을 좀 줬습니다. 코드를 어떻게 짜야할 지부터 주제를 관통하는 질문까지 남발했어요. 지금 생각해보면 그러면 안됐습니다. 술을 마시고 쓸데없이 높아지는 자신감이 나의 종말을 앞당깁니다.

눈을 떴을 때 맴돌던 두통이 전날 과음을 했다는 사실을 상기시켰습니다. 마실 때에는 별로 취하지 않아서 별 생각이 없었는데 천천히 헤어보니 꽤나 많이 마셨더라고요. 맥주 한 캔에 생맥 500 두 잔 그리고 소주 한 병과 사케 반 팩. 다양하게도 많이 마셨습니다. 오늘 일정이 복잡해서 오후가 다 되도록 숙취에서 벗어나지 못하면 어쩌지 걱정했습니다.

다소 좋지 못한 상태로 윤빈이의 공모전을 도와줬습니다. FFMPEG의 존재에 대해서 알려줬어요. 윤빈이가 씻는 사이에 간단한 파이썬 스크립트도 짜줬습니다. 윤빈이는 만족했고 나도 숙취에서 벗어날 수 있었습니다. 역시 해장에는 초코우유보다 파이썬이죠. — 아니, Jupyter 탓에 벗어난 것일지도 모르겠습니다. 평소에 Jupyter를 너무나도 싫어해서 잘 사용하지 않는 편인데 윤빈이가 Jupyter 환경에서 작업을 하고 있더라고요. 덕분에 Jupyter를 근 7년만에 써보았습니다. 자동 완성이 되지 않는다는 사실을 알 수 있었고 덕분에 나는 정신을 다 잡으려 노력할 수 밖에 없었습니다.

윤빈이가 수업을 들으러 나간 사이에 나도 나갈 준비를 했습니다. 왕페이가 된 것 같았어요. 남의 생활감으로 가득 찬 공간에 혼자 남겨졌을 때 나는 663번 경관의 집에 침입한 것 같은 기분을 느낍니다. 경관의 짐을 내다버리지는 않겠습니다만, 샤워를 하면서 이게 샴푸가 맞는지 굳이 확인해보는 건 이런 이유에서이지 않을까요.

수업이 끝난 윤빈이와 함께 점심을 먹기 위해 100주년기념관으로 갔습니다. 나는 종합대 캠퍼스를 갈 때 마다 어색함을 느낍니다. 대학교 캠퍼스에 사람이 많을 수 있다는 사실에 익숙하지 않아요. 포항공대 로고가 찍힌 우산을 들고 혼자 배회하는 내 모습이 약간은 우스워 보였을 수도 있겠습니다.

2024. 03. 29., 서울 동작구 흑석로13가길 43.

중앙대 정문 쪽에 있는 ‘칠기’에 갔습니다. 마라샹궈와 꿔바로우를 먹었어요. 중간에 무게를 재지 않고 막 담다보니 5만원이 나와버렸습니다. 마라샹궈는 2명에서 먹어도 5만원이 나오고 3명에서 먹어도 5만원이 나오고 4명에서 먹어도 5만원이 나오는 것을 보니 마법의 음식임에 틀림없습니다. 둘 다 매운 것을 잘 먹지 못해서 1단계로 주문했는데 마라 맛이 너무 약해서 다음에는 2단계로 주문해야겠다 싶었습니다. 이것보다는 얼얼한 맛을 원했어요.

2024. 03. 29., 서울 동작구 흑석로 101-7. 2024. 03. 29., 서울 동작구 흑석로 101-7.

KTX를 타기까지 시간이 붕 떠서 근처에 있는 카페에 갔습니다. 카페라기보다 커피집이라는 표현이 더 잘 어울릴지도 모르겠어요. 지하로 이어진 계단을 한 칸씩 내려갈 때마다 내 코에 침입하는 오래된 냄새가 나에게 있지도 않은 향수를 자극시켰습니다. 이전에 도쿄에서 방문했던 커피집을 닮았습니다. 이전에 혜화에서 방문했던 학림다방을 닮았습니다. 후회할 낙서들이 남아있지는 않은가 벽면을 쳐다보며 밤에는 위스키를 취급했으면 좋겠다는 생각을 했습니다.

카카오맵에게 속을 뻔 했지만 윤빈이가 구해줬습니다. 151번이 서울역을 지나감에도 불구하고 그 전 정류장에서 내리라고 안내하던 카카오맵을 바로잡아줬어요. 덕분에 KTX를 놓치지 않았습니다.

논문들을 읽을까 고민하다가 귀신들의 땅을 마저 읽었습니다. 재밌어요. 여전히 조금 어렵긴 한데 말이죠.

대전역에 다다른 것은 4시 즈음이었습니다. 사실 영뚝과 약속은 6시 반 이었지만 알맞은 기차 시간이 없었어요. 일찍 도착한 김에 이번에는 내가 움직였습니다. 그렇게 먼 줄 몰랐어요. 매번 역에서 만나자고 한 내 모습이 부끄러웠습니다.

궁동에 있는 카페에서 영뚝이를 기다렸습니다. 소설을 읽다가 싫증이 나서 논문을 꺼냈고 의미없이 밑줄을 그으며 노래를 넘기고 있었습니다. 그때 누군가 창문을 두드렸고 내 노래는 소녀시대의 ‘Baby Baby’ 였습니다.

잘 보이고 싶을 때 조금씩 꾸미는 일에 다시 재미를 붙이기 시작했습니다. 살이 빠지면서 외모에 대한 자신감이 높아져서 그런 것 같습니다. 오늘은 이어커프를 왼쪽 귀에 착용했어요. 예전에는 오른쪽 귀에 했었던 것 같았습니다만 확인해볼 기억을 찾을 수 없었습니다. 귀 때문에 처음에 나인지 헷갈렸다는 말을 듣고 시나모롤 인형이 달린 가방을 매길 잘했다는 생각이 들었어요.

2024. 03. 29., 대전 유성구 대학로159번길 19 2층.

점심에 중식을 먹은 터라 중식은 먹기 싫다고 말했습니다. 그럼에도 딤섬을 제안했고 나는 거부할 수 없었습니다. 내가 언제 딤섬을 좋아한다고 말한 적이 있었나 헷갈렸습니다. “만화쉔”에서 비취교, 샤오롱바오, 그리고 볶음면을 먹었어요. 점심을 많이 먹은 터라 맛있게 먹을 수 있을까 걱정했습니다. 괜한 걱정이었음은 금방 깨달을 수 있었습니다.

영뚝이는 아무리 뜨거워도 물을 바로 마시지 않는대요. 물 때문에 맛이 흩어질까봐. 한마디에 설득 당했습니다. 나도 앞으로는 따라해보려고요. 이것저것 다양한 이야기를 나눴습니다. 바닷가 엠티도 자랑했고 데이식스 이야기도 했어요. 내년에는 데이식스 콘서트를 꼭 가보려고요.

본디 카공을 하기로 했던 터라 스타벅스로 넘어갔습니다. 공부는 무슨 다양한 주제로 떠들었는데 영뚝이의 피칭이 기억에 남아요. 창업 관련 대회에 붙었다며 슬라이드를 보여줬어요. 자기 팀이 왜 됐는지 모르겠다고 말하던데 자기만 모르는 것 같습니다. 문제를 풀어내는 방법이 새로웠고 그것을 전달하는 발표의 모양이 너무 좋았어요. 다음 단계도 무난하게 통과하지 않을까 생각했습니다. 잘 하고 있어.

나는 귀신들의 땅을 헤맸고 영뚝은 잠에 들었습니다. 가만히 잠에 든 모습이 귀여우면서도— 피곤한 사람을 괜히 불러낸게 아닌가 미안했습니다.

편의점에 들러서 김밥을 샀어요. 김밥을 전자레인지에 넣는 사람을 오래간만에 만나서 반가웠습니다. 편의점 김밥을 데워서 먹을 때마다 부우가 누가 그걸 데워서 먹냐고 한 마디씩 해서 속상했어요. 밥은 따뜻하게 먹어야지라고 말하는 영뚝을 보며 통하는 구석이 있어서 다행이라고 생각했습니다.

2024. 03. 29., 대전 유성구 궁동 409-1. 2024. 03. 29., 대전 유성구 궁동 409-1.

길가에서 떡볶이를 먹었습니다. 스스로가 힘든 상태에 있음을 정의할 때에는 다른 사람들이 얼마나 힘든지 상관할 필요가 없다는 말을 해주고 싶었어요. 나도 잘 그러지 못하지만.

2024. 03. 29., 대전 동구 중앙로 215.

12시 기차인 줄 알았는데 11시 반이었습니다. 영뚝이가 역까지 가는 빠른 길을 알려줬어요. 지하철 시간표도 확인해보라고 귀띔해줬어요. 제 시간에 기차를 탈 수 있었고 덕분에 늦지 않았다고 셀카와 함께 카톡을 보냈습니다. 살 빠지더니 안 하던 짓을 정말 많이 하게 되는 것 같습니다.

밀린 일기를 완성했을 때에는 동대구역이었습니다.

채 엉기지 못한 향운을 조금 내몰고

2024. 03. 29., 대전 유성구 대학로.

기차를 놓칠세라 한 걸음이 아까운 와중에 꽃이나 찍고 있으니 어이가 없을 법도 합니다. 놓쳐도 나쁘지 않겠다는 마음이 있었습니다. 간단한 핑계를 댔어요— 우리 학교에는 아직 꽃이 피지 않았어요. 향운이 맺히기에는 꽤 추운 날씨의 연속이었거든요.

그럼에도 꽃들은 나를 우습게도 환영할 준비를 끝마쳤습니다.

포항에는 꽃이 영영 피지 않기를. 약간 내몰고 싶어졌습니다.

2024. 03. 30., 경북 포항시 남구 청암로 77.


권민재

WWW 사이버디지탈 COM